Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In some cases, software applications are designed for execution on a specific processor or processing system. For example, software code for a particular application may include instructions that operate on more than one data item at once (single instruction multiple data instructions, or SIMD instructions), and which are specific to a certain type of processor. Such specific instructions are often used with used with number-oriented data types including int, float and double. In some cases, software compilers may be configured to perform auto-vectorization which changes software code for use with a specific processor. However, auto-vectorization does not work well with all types of software code.